<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一：
        // const one = (false || {} || null)
        // const two = (null || false || "")
        // const three = ([] || 0 || true)

        // console.log(one, two, three)  // {} "" []
        //  使用||运算符，我们可以返回第一个真值。 如果所有值都是假值，则返回最后一个值。
        // （false || {} || null）：空对象{}是一个真值。 这是第一个（也是唯一的）真值，它将被返回。one等于{}。
        // （null || false ||“”）：所有值都是假值。 这意味着返回传递的值""。 two等于""。
        // （[] || 0 ||“”）：空数组[]是一个真值。 这是第一个返回的真值。 three等于[]。

        // 二：
        // const output = `${[] && 'Im'}possible!
        // You should${'' && `n't`} see a therapist after so much JavaScript lol`
        // []是一个真值。 使用&&运算符，如果左侧值是真值，则返回右侧值。 在这种情况下，左侧值[]是一个真值，所以返回Im。
        // ""是一个假值。 如果左侧值是假的，则不返回任何内容。 n't不会被退回。

        // 三：
        // const getList = ([x, ...y]) => [x, y]
        // // const getUser = user => { name: user.name, age: user.age }
        // const getUser = user => ({ name: user.name, age: user.age })

        // const list = [1, 2, 3, 4]
        // const user = { name: "Lydia", age: 21 }

        // console.log(getList(list))
        // console.log(getUser(user))

        // getUser函数接收一个对象。对于箭头函数，如果只返回一个值，我们不必编写花括号。
        // 但是，如果您想从一个箭头函数返回一个对象，您必须在圆括号之间编写它，否则不会返回任何值!下面的函数将返回一个对象:

        // 四：
        // var a = 2;
        // if(function b () {}) {
        //     a += typeof(b)
        // }
        // console.log(a)           // 1undefined
        // console.log(2+undefined) // NaN

        

        // 五：
        // 对于原生的setTimeout来说，我们无法对第一个函数进行传参
        // setTimeout(function(a) {
        //     console.log(a)
        // }, 1000)

        // // 我们可以使用闭包，在函数外部对内部函数进行传参以达到目的
        // function func(param) {
        //     return function() {
        //         console.log(param)
        //     }
        // }
        // var f1 = func(66)
        // setTimeout(f1,1000)

        // 六：
        // var a = 5;
        // function test() {
        //     a = 0;
        //     console.log(a);
        //     console.log(this.a);        // this 默认指向全局
        //     var a;                      // 变量提升
        //     console.log(a);
        // }
        // test();         // 0 5 0        
        // new test();     // 0 undefined 0

        // 七：
        
    </script>
</body>
</html>